package com.qm.chp07exception;

/**
 * @author wb
 * @date 2023-06-28 10:54
 * @description: Exception和Error的区别
 * Error 的出现，意味着程序出现了严重的问题，而这些问题不应该再交给 Java 的异常处理机制来处理，程序应该直接崩溃掉，
 * 比如说 OutOfMemoryError，内存溢出了，这就意味着程序在运行时申请的内存大于系统能够提供的内存，导致出现的错误，这种错误的出现，对于程序来说是致命的。
 * Exception 的出现，意味着程序出现了一些在可控范围内的问题，我们应当采取措施进行挽救。
 * 比如说之前提到的 ArithmeticException，很明显是因为除数出现了 0 的情况，我们可以选择捕获异常，然后提示用户不应该进行除 0 操作，
 * 当然了，更好的做法是直接对除数进行判断，如果是 0 就不进行除法运算，而是告诉用户换一个非 0 的数进行运算。
 */
public class MyException2 {
    public static void main(String[] args) {
//        java.lang.ClassNotFoundException。
        try {
            Class clz = Class.forName("com.itwanger.s41.Demo1");
        } catch (ClassNotFoundException e) {
//            throw new RuntimeException(e);
//            注意打印异常堆栈信息的 printStackTrace() 方法，该方法会将异常的堆栈信息打印到标准的控制台下，如果是测试环境，这样的写法还 OK，
//            如果是生产环境，这样的写法是不可取的，必须使用日志框架把异常的堆栈信息输出到日志系统中，否则可能没办法跟踪。
            e.printStackTrace();
        }

    }
}
